Covering arrays are combinatorial technical design objects deployed in “pairwise testing” or “t-wise testing” of systems including, but not limited to software, optical networks, communications and coding, mobile adhoc networks and circuits. Often, it has been observed that exhaustive testing is not an economical option. On the other hand, random testing is unreliable as it may fail to provide requisite quantum of test coverage. Covering arrays provide balanced approach where error detection comes from t-wise interactions of parameter values, while minimizing the number of tests.
The term “coverage” in a representative scenario signifies the degree of accuracy with which a set of sample configurations “covers” or encompasses a set of configurations under consideration. Whereas, “full coverage”, in the context of covering array generation signifies that all configurations are chosen, “no coverage” indicates that none of the configurations are chosen. Different scenarios are created by combining these parameters that define the configuration. Applications that have multiple functional flows by combinations of various such parameters are termed as ‘Combinatorial’ type software applications. Typical examples for the ‘Combinatorial’ type software applications are the pricing of home loan products offered by banks, premium calculator of insurance policy, flight ticket reservation, etc.
The inventors here have recognized several technical problems with such conventional systems, as explained below. There are several challenges in software testing and assurance of ‘Combinatorial’ type applications. Some of the major challenges include: processing of a large number of test scenarios, identification and selection of suitable scenarios, lack of adequate coverage, greater testing effort and stretched testing cycle.